<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
<!-- accessible.qdoc -->
  <title>Accessibility | Qt 5.14</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td ><a href="index.html">Qt 5.14</a></td><td >Accessibility</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right">Qt 5.14.2 Reference Documentation</td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
  <link rel="next" href="accessible-qwidget.html" />
<p class="naviNextPrevious headerNavi">
<a class="nextPage" href="accessible-qwidget.html">Accessibility for QWidget Applications</a>
</p><p/>
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#introduction">Introduction</a></li>
<li class="level1"><a href="#making-applications-accessible">Making Applications Accessible</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">Accessibility</h1>
<span class="subtitle"></span>
<!-- $$$accessible.html-description -->
<div class="descr"> <a name="details"></a>
<a name="introduction"></a>
<h2 id="introduction">Introduction</h2>
<p>Accessibility in computer software is making applications usable for people with different abilities. It is important to take different people's needs into account, for example, in case of low vision, hearing, dexterity, or cognitive problems. Some examples of accessibility measures are keyboard shortcuts, a high-contrast user interface that uses specially selected colors and fonts, or support for assistive tools such as screen readers and braille displays.</p>
<p>A basic checklist that any application should aim for:</p>
<ul>
<li><b>Usability</b> - Usability and user centric design generally lead to more usable applications, including improvements for people with various abilities.</li>
<li><b>Fonts</b> - Font settings should follow the system/platform. This allows users to select fonts for readability and increasing the font size.</li>
<li><b>Colors</b> - Provide enough contrast and consider the most common cases of low vision and color blindness. Make sure that the application is usable, for example, for people with red/green blindness, and don't depend on colors only.</li>
<li><b>Scalable UI</b> - A user interface that works in various sizes and properly supports different fonts and accommodates size changes.</li>
<li><b>Sounds</b> - Do not exclusively rely on sound notifications, provide a visual alternative when a sound signal is imperative to using the application.</li>
<li><b>Spelling</b> - Offer spell checking wherever it makes sense, even when only a single word is expected.</li>
<li><b>Assistive Technology</b> - Support the use of assistive tools (AT). Either use standard widgets/controls which support ATs out of the box, or make sure that your custom widgets and controls support accessibility properly. In order to learn more about this read on below.</li>
</ul>
<p>This part of the documentation assumes that the basics for accessibility, which go hand in hand with usability, are already in good shape. The rest of this document focuses more specifically on supporting assistive technology.</p>
<p>Assistive Tools (or ATs) come in great variety and help users with different tasks. For this reason what individual applications offer (with the help of Qt) is a generic API that allows to inspect what is on screen in a semantic way and offers the typical interactions with the UI elements.</p>
<p>Applications do not usually communicate directly with the assistive tools, but through a platform specific API. Generally the communication with the ATs works though an IPC mechanism. Semantic information about user interface elements, such as buttons and scroll bars, is exposed to the assistive technologies. Qt supports UI Automation on Windows, macOS Accessibility on macOS, and AT-SPI via DBus on Unix/X11. The platform specific technologies are abstracted by Qt, so that applications do not need any platform specific changes to work with the different native APIs. Qt tries to make adding accessibility support to your application as easy as possible, only a few changes from your side may be required to allow even more users to enjoy it.</p>
<p>The main reason to consult this documentation is to learn how to make custom <a href="../qtwidgets/qwidget.html">QWidget</a> subclasses and <a href="../qtquick/qquickitem.html">QQuickItem</a>s accessible.</p>
<p>In this overview document, we will examine the overall Qt accessibility architecture, and how to implement accessibility for custom widgets and elements.</p>
<a name="making-applications-accessible"></a>
<h2 id="making-applications-accessible">Making Applications Accessible</h2>
<p>These two pages focus on giving an overview of how to achieve good accessibility:</p>
<p><a href="accessible-qwidget.html">Accessibility for QWidget Applications</a></p>
<p><a href="accessible-qtquick.html">Accessibility for Qt Quick Applications</a></p>
<p>These classes provide support for accessible applications: <div class="table"><table class="annotated">
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtquick/qml-qtquick-accessible.html">Accessible</a></p></td><td class="tblDescr"><p>Enables accessibility of QML items</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessible.html">QAccessible</a></p></td><td class="tblDescr"><p>Enums and static functions related to accessibility</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibleactioninterface.html">QAccessibleActionInterface</a></p></td><td class="tblDescr"><p>Implements support for invocable actions in the interface</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibleeditabletextinterface.html">QAccessibleEditableTextInterface</a></p></td><td class="tblDescr"><p>Implements support for objects with editable text</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibleevent.html">QAccessibleEvent</a></p></td><td class="tblDescr"><p>The base class for accessibility notifications</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibleinterface.html">QAccessibleInterface</a></p></td><td class="tblDescr"><p>Defines an interface that exposes information about accessible objects</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibleobject.html">QAccessibleObject</a></p></td><td class="tblDescr"><p>Implements parts of the QAccessibleInterface for QObjects</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibleplugin.html">QAccessiblePlugin</a></p></td><td class="tblDescr"><p>Abstract base class for plugins provinding accessibility information for user interface elements</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessiblestatechangeevent.html">QAccessibleStateChangeEvent</a></p></td><td class="tblDescr"><p>Notfies the accessibility framework that the state of an object has changed</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletablecellinterface.html">QAccessibleTableCellInterface</a></p></td><td class="tblDescr"><p>Implements support for the IAccessibleTable2 Cell interface</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletableinterface.html">QAccessibleTableInterface</a></p></td><td class="tblDescr"><p>Implements support for the IAccessibleTable2 interface</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletablemodelchangeevent.html">QAccessibleTableModelChangeEvent</a></p></td><td class="tblDescr"><p>Signifies a change in a table, list, or tree where cells are added or removed. If the change affected a number of rows, firstColumn and lastColumn will return -1. Likewise for columns, the row functions may return -1</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletextcursorevent.html">QAccessibleTextCursorEvent</a></p></td><td class="tblDescr"><p>Notifies of cursor movements</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletextinsertevent.html">QAccessibleTextInsertEvent</a></p></td><td class="tblDescr"><p>Notifies of text being inserted</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletextinterface.html">QAccessibleTextInterface</a></p></td><td class="tblDescr"><p>Implements support for text handling</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletextremoveevent.html">QAccessibleTextRemoveEvent</a></p></td><td class="tblDescr"><p>Notifies of text being deleted</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletextselectionevent.html">QAccessibleTextSelectionEvent</a></p></td><td class="tblDescr"><p>Signals a change in the text selection of an object</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessibletextupdateevent.html">QAccessibleTextUpdateEvent</a></p></td><td class="tblDescr"><p>Notifies about text changes. This is for accessibles that support editable text such as line edits. This event occurs for example when a portion of selected text gets replaced by pasting a new text or in override mode of editors</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtgui/qaccessiblevaluechangeevent.html">QAccessibleValueChangeEvent</a></p></td><td class="tblDescr"><p>Describes a change in value for an accessible object</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtgui/qaccessiblevalueinterface.html">QAccessibleValueInterface</a></p></td><td class="tblDescr"><p>Implements support for objects that manipulate a value</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtwidgets/qaccessiblewidget.html">QAccessibleWidget</a></p></td><td class="tblDescr"><p>Implements the QAccessibleInterface for QWidgets</p></td></tr>
</table></div>
</p>
</div>
<!-- @@@accessible.html -->
<p class="naviNextPrevious footerNavi">
<a class="nextPage" href="accessible-qwidget.html">Accessibility for QWidget Applications</a>
</p>
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2020 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>
